package reflect;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * 常用的元注解：
 * @Target:用于指明当前注解可以被应用的位置，具体位置由ElementType表示
 *    ElementType.TYPE:注解可以被应用在类上、接口上
 *    ElementType.METHOD:注解可以被应用在方法上
 *    ElementType.FIELD:注解可以被应用在成员变量/属性上
 *    ElementType.PARAMETER:注解可以被应用在方法参数上
 *    ElementType.CONSTRUCTOR:解可以被应用在构造器上
 *
 *    例如：当前注解只能在类上使用
 *          @Target(ElementType.TYPE)
 *    例如：当前注解可以在类上及属性上使用（数组形式指定）
 *          @Target({ElementType.TYPE,ElementType.FIELD})
 *
 *  @Retention:用于指明当前注解被保留的时间长短，具体形式由RetentionPolicy表示
 *     RetentionPolicy.SOURCE:注解保留在源文件中，不保留在class字节码文件中
 *     RetentionPolicy.CLASS:注解保留在class字节码文件中(默认保留级别)
 *     RetentionPolicy.RUNTIME:注解保留在class字节码文件中，在运行期也保留，可以通过反射获得注解信息
 */
@Target({ElementType.TYPE,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoRunCLass {

}
